##########################################################
# Tabelas descritivas com o Censo da Educação Superior (2011 e 2017)
# Autoria: Leonardo Rodrigues
# Código escrito e executado no RStudio (Version 1.3.1073)
##########################################################

### 1 Preparação ----
# Leitura dos pacotes
library(haven)
library(tidyverse)
library(ggthemes)
library("gt")
library(ggplot2)
library(directlabels)
library(ggrepel)
library(scales)
library(readr)
library(sitools)
library(webshot)
library(dplyr)
library(stringr)
library(tidyr)
library(tools)
library(summarytools)

### 2 Preparação dos bancos de dados (padronizar e agregar) ---

#Leitura dos dados do Censo 2017
censo <- read.csv2(file="data/originaisCenso/DM_CURSO17.csv",sep="|")

#preparando minha variável de Área
#criando variável "area" com os cursos de Engenharia, Direito, Medicina
censo$area <- as.numeric(censo$TP_GRAU_ACADEMICO)


censo$eng <- as.integer(str_detect(censo$NO_CURSO,"ENGENHARIA"))
censo$dir <- as.integer(str_detect(censo$NO_CURSO,"DIREITO"))
censo$med <- as.integer(censo$NO_CURSO == "MEDICINA" | censo$NO_CURSO == "MEDICINA GERAL")

censo <- censo %>%
  mutate(area = ifelse(eng == 1, 5, area))

censo <- censo %>%
  mutate(area = ifelse(dir == 1, 6, area))

censo <- censo %>%
  mutate(area = ifelse(med == 1, 7, area))


#preparando variável de instituição (pública e privada)
censo$rede <- as.factor(censo$TP_CATEGORIA_ADMINISTRATIVA)

censo <- censo %>%
  mutate(rede = case_when(
    rede == "1" ~ "Pública",
    rede == "2" ~ "Pública",
    rede == "3" ~ "Pública",
    rede == "4" ~ "Privada",
    rede == "5" ~ "Privada",
    rede == "6" ~ "Privada",
    rede == "7" ~ "Privada"))

censo1 <- censo %>% select(NU_ANO_CENSO, TP_CATEGORIA_ADMINISTRATIVA, NO_CURSO, area, rede, QT_CONCLUINTE_TOTAL)
censo1 <- censo1 %>%
  rename(ano = NU_ANO_CENSO,
         concluinte = QT_CONCLUINTE_TOTAL)

#Leitura dos dados do Censo 2011

censo <- read.csv2(file="data/originaisCenso/DM_CURSO11.csv", header = TRUE, sep="|")

#preparando minha variável de Área
#criando variável "area" com os cursos de Engenharia, Direito, Medicina
censo$area <- as.numeric(censo$CO_GRAU_ACADEMICO)

censo$eng <- as.integer(str_detect(censo$NO_OCDE,"Engenharia"))
censo$dir <- as.integer(str_detect(censo$NO_OCDE,"Direito"))
censo$med <- as.integer(censo$NO_OCDE == "Medicina" | censo$NO_OCDE == "Medicina Geral")

censo <- censo %>%
  mutate(area = ifelse(eng == 1, 5, area))

censo <- censo %>%
  mutate(area = ifelse(dir == 1, 6, area))

censo <- censo %>%
  mutate(area = ifelse(med == 1, 7, area))

#preparando variável de instituição (pública e privada)
censo$rede <- as.factor(censo$CO_CATEGORIA_ADMINISTRATIVA)

censo <- censo %>%
  mutate(rede = case_when(
    rede == "1" ~ "Pública",
    rede == "2" ~ "Pública",
    rede == "3" ~ "Pública",
    rede == "4" ~ "Privada",
    rede == "5" ~ "Privada"))

censo2 <- censo %>% select(CO_CATEGORIA_ADMINISTRATIVA, NO_OCDE, area, rede, QT_CONCLUINTE_CURSO)

#Padronizar o Censo de 2011 com o censo de 2017 (nomes de variáveis)
censo2$ano <- 2011
censo2 <- censo2 %>%
  rename(ano = ano,
         TP_CATEGORIA_ADMINISTRATIVA = CO_CATEGORIA_ADMINISTRATIVA,
         NO_CURSO = NO_OCDE,
         concluinte = QT_CONCLUINTE_CURSO)

censo2 <- censo2[c("ano", "TP_CATEGORIA_ADMINISTRATIVA", "NO_CURSO", "area", "rede", "concluinte")]

#Agregar as duas bases de dados: Censo de 2017 e Censo de 2011 ####

censo <- rbind(censo1, censo2)


# Recodificando as categorias da variável "área"
censo$area <- as.factor(censo$area)
censo <- censo %>%
  mutate(area = case_when(
    area == "1" ~ "Bacharelado",
    area == "2" ~ "Licenciatura",
    area == "3" ~ "Tecnológico",
    area == "5" ~ "Engenharia",
    area == "6" ~ "Direito",
    area == "7" ~ "Medicina"))

### 2 Construções das tabelas ---

# Quadro 4 – Dinâmica de expansão dos concluintes para as áreas analisadas ####

censo %>% group_by(ano, area) %>%
  summarise(a_sum=sum(concluinte, na.rm = T)) %>%
  mutate("%"=a_sum/sum(a_sum)*100) %>%
  pivot_wider(names_from = ano, values_from = c(a_sum, "%")) %>%
  rename("2011 N" = a_sum_2011) %>%
  select(area, "2011 N", "%_2011", a_sum_2017, "%_2017") %>%
  arrange(desc(a_sum_2017)) %>%
  drop_na(area) %>%
  mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .))) %>%
  ungroup() %>%
  mutate("Saldo"=a_sum_2017-`2011 N`) %>%
  mutate("% crescimento"=Saldo/sum(Saldo)*100) %>%
  select(area,`2011 N`, `%_2011`, a_sum_2017, `%_2017`, Saldo, `% crescimento`) %>%
  gt(rowname_col = "area") %>%
  tab_stubhead(label = "Area") %>%
  tab_header(title = md("Concluintes (frequência e percentual) por modalidade, rede e área"),
             subtitle = "2011 - 2017") %>%
  tab_source_note(source_note = "Censo do Ensino Superior – Inep, 2011-2017. Elaboração própria") %>%
  fmt_number(columns = vars("%_2011", "%_2017", "% crescimento"),
             decimals = 1) %>%
  summary_rows(columns = vars("2011 N"),
               fns = list(TOTAL = "sum"),
               formatter = fmt_number, decimals = 0, use_seps = FALSE) %>%
  summary_rows(columns = vars("a_sum_2017"),
               fns = list(TOTAL = "sum"),
               formatter = fmt_number, decimals = 0, use_seps = FALSE) %>%
  summary_rows(columns = vars("%_2011", "%_2017", "Saldo", "% crescimento"),
               fns = list(TOTAL = "sum"),
               formatter = fmt_number, decimals = 0, use_seps = FALSE) %>%
  tab_spanner(label = "2011", columns = vars("2011 N", "%_2011")) %>%
  tab_spanner(label = "2017", columns = vars("a_sum_2017", "%_2017")) %>%
  cols_label("%_2011" = md("%"), "%_2017" = md("%")) %>%
  cols_label("2011 N" = md("N"), "a_sum_2017" = md("N")) %>%
  tab_spanner(label = "Crescimento", columns = vars("Saldo", "% crescimento")) %>%
  cols_label("Saldo" = md("N"), "% crescimento" = md("%"))


#Quadro 5 – Proporção de concluintes no setor público e privado por área.####

t1 <- censo %>%
  group_by(area, rede, ano) %>%
  drop_na(area) %>%
  summarise(a_sum=sum(concluinte, na.rm = T)) %>%
  pivot_wider(names_from = rede, values_from = c(a_sum))

t2 <- t1 %>% filter(area %in% c("Bacharelado", "Direito", "Engenharia", "Licenciatura", "Medicina", "Tecnológico")) %>%
  group_by(ano) %>%
  summarise(Privada = sum(Privada), Pública = sum(Pública)) %>%
  add_column(area = "Total") %>%
  select(area, ano, Privada, Pública)

tabela5 <- rbind(t1, t2)

tabela5 %>% mutate(soma = Privada + Pública, 
                   Privado.p = (Privada/soma)*100,
                   Publico.p= (Pública/soma)*100) %>%
  dplyr::select(area, ano, Privado.p, Publico.p) %>%
  gt(rowname_col = "ano", groupname_col = c("area")) %>%
  tab_header(title = "Participação do setor por especialidade",
             subtitle = "2011 - 2017") %>%
  tab_source_note(source_note = "Enade, 2011-2017. Elaboração própria") %>%
  fmt_number(columns = vars("Privado.p", "Publico.p"), decimals = 1) %>%
  tab_spanner(label = "Setor", columns = vars("Privado.p", "Publico.p")) %>%
  cols_label("Privado.p" = md("Privado"), "Publico.p" = md("Publico")) %>%
  cols_label("area" = md("Área"), "ano" = md("Ano")) %>%
  cols_align(align = "center") %>%
  tab_options(data_row.padding = px(1.5),
              row_group.padding = px(1.5),
              table.font.size = "small",
              heading.align = "center")
